Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> mod-rewrite i https -> http
redman2
post
Post #1





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 13.10.2004

Ostrzeżenie: (0%)
-----


Czy ktos wie, czemu po zastosowaniu takiej reguly w mod-rewrite

Kod
RewriteCond %{HTTPS} ^on$
   RewriteRule ^([a-z]+)$ http://%{HTTP_HOST}/$1.php [R]


i wpisaniu w przegladarce np : https://domena/index
przekierowuje mnie na http://domena/index.php zamiast http://domena/index

Dla mnie jest to co najmniej dziwne
Go to the top of the page
+Quote Post
seaquest
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 790
Pomógł: 7
Dołączył: 6.02.2003
Skąd: Polska

Ostrzeżenie: (0%)
-----


rotfl

Bo mu tak kazałeś.
$1.php masz w regule. jak dasz samo $1 to będzie dobrze.
Go to the top of the page
+Quote Post
redman2
post
Post #3





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 13.10.2004

Ostrzeżenie: (0%)
-----


Nie pisz proszę głupot jeżeli nie jesteś pewny, bo inny to też czytają.

$1.php określa do czego apache ma się odwoływać a nie, co pokazywać w pasku adresowym.

Podałem wyraźnie, że problem polega z przejściem z https na http.

Pozdrawiam
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale kolega ma rację. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

RewriteRule ^([a-z]+)$ http://%{HTTP_HOST}/$1.php [R]
Go to the top of the page
+Quote Post
redman2
post
Post #5





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 13.10.2004

Ostrzeżenie: (0%)
-----


Oj, kolega chyba nie ma racji.

Jak w takim razie mod-rewrite bedzie wiedzialo do jakiego pliku sie odniesc ?

Odsylam do podstaw
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To już nie sprawa mod_rewrite, tylko przeglądarki, bo dajesz flagę [R], która nakazuje przeglądarce przejście pod nowy adres. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

To tak samo, jakbyś dał:
  1. <?php
  2. header('Location: <a href=\"http://adres.pl/strona');&#092;" target=\"_blank\">http://adres.pl/strona');</a>
  3. ?>


Spróbuj najpierw, a nie uczysz się pływać na sucho. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

IPB kisi adres, tu powinno być przekierowanie via PHP

Ten post edytował erix 3.12.2008, 23:16:18
Go to the top of the page
+Quote Post
redman2
post
Post #7





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 13.10.2004

Ostrzeżenie: (0%)
-----


Kolejny madry bez retorycznej odpowiedzi. Tym razem zawodowy ratownik.

To, ze robi, przekierowanie, to ja doskonale wiem. Zalozmy taki scenariusz. Jestem na formularzu z adresem:
Kod
   https://domena/forma/pl

teraz klikam na link: "/strona"

I po sprawdzeniu innej reguly, ktora nakazuje wszystkim stronom nie spelnaiajacym warunku (forma/pl) przekeirowanie na http,
zostane przekierowany na
Kod
   http://domena/strona.php

I teraz, jezeli jeszcze raz klikne na ten sam link "/strona"

regula zadziala i pojawi sie w pasku adresowym:
Kod
    http://domena/strona

Czyl regula dziala, ale problem pojawia sie tylko w przejsciu z https na http

Prosilbym, jezeli nie wiecie co z tym zrobic, to nie odpowiadajcie, bo naprawde szkoda czasu.

Pozdrawiam

Ten post edytował redman2 4.12.2008, 09:47:12
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Kolejny madry bez retorycznej odpowiedzi. Tym razem zawodowy ratownik.

A Ty zamotałeś pytanie. Jakoś i ~Seaquest zrozumiał problem tak samo, jak ja.

Cytat
Czyl regula dziala, ale problem pojawia sie tylko w przejsciu z https na http

Sory, ale jakoś do tej pory nie mogę się dowiedzieć, w czym masz problem. Piszesz problem, ale JAKI, to już nie:
Cytat
ale problem pojawia sie tylko w przejsciu z https na http

Czyli nie przekierowywuje? Czy przekierowywuje, ale mod_rewrite olewa inne regułki? Pisz konkretnie, to szybciej coś poradzimy. Najlepiej wklej wszystkie regułki przepisywania.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Eh?
1. Podajesz jedna z wielu regulek i tylko na jej podstawie mamy wiedziec co zle zrobiles?
2. Nadal nei rozumiem co chcesz osiagnac
3. Z tego co widze
Kod
RewriteCond %{HTTPS} ^on$
RewriteRule ^([a-z]+)$ http://%{HTTP_HOST}/$1.php [R]

robisz redirecta z httpS do samego http.
4. RTFM
Cytat
'redirect|R [=code]' (force redirect)

Prefix Substitution with http://thishost[:thisport]/ (which makes the new URL a URI) to force a external redirection. If no code is given, a HTTP response of 302 (MOVED TEMPORARILY) will be returned. If you want to use other response codes, simply specify the appropriate number or use one of the following symbolic names: temp (default), permanent, seeother. Use this for rules to canonicalize the URL and return it to the client - to translate ``/~'' into ``/u/'', or to always append a slash to /u/user, etc.
Note: When you use this flag, make sure that the substitution field is a valid URL! Otherwise, you will be redirecting to an invalid location. Remember that this flag on its own will only prepend http://thishost[:thisport]/ to the URL, and rewriting will continue. Usually, you will want to stop rewriting at this point, and redirect immediately. To stop rewriting, you should add the 'L' flag.

While this is typically used for redirects, any valid status code can be given here. If the status code is outside the redirect range (300-399), then the Substitution string is dropped and rewriting is stopped as if the L flag was used.

wykona ci: header( "Location: ....php" ) => czyli wykona kolejny request do web serwera => czyli zmieni URL w przegladarce
a

Kod
RewriteRule ^([a-z]+)$ http://%{HTTP_HOST}/$1.php [R]


oznacza przeciez: dopisz ".php" do request urla i przenies sie na http bez "S"
Go to the top of the page
+Quote Post
redman2
post
Post #10





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 13.10.2004

Ostrzeżenie: (0%)
-----


Troszkę nie do końca. Dobra, spróbuję z innej beczki.

Mam serwis, w którym występują takie reguły mod-rewrite (na przykladzie)

Kod
         http:// domena/nazwa.php?query => http://domena/nazwa?query
         http://domena/nazwa_nazwa2.php => http://domena/nazwa/nazwa2?query
         http://domena/nazwa_nazwa2_nazwa3.php => http://domena/nazwa/nazwa2/nazwa3?query

Dla kilku "nazw" muszę zastosować zabezpieczenie https, np:

Kod
       http://domena/form_pl.php =>  https://domena/form/pl


Rozwiązałem to w następujący sposób:

Kod
       RewriteCond %{HTTPS} !^on$
       RewriteCond %{REQUEST_URI} ^/(form|kontakt|rejestruj|haslo|admin) [NC]
       RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]

RewriteRule ^([a-z]+)/?$ /$1.php [L,QSA]
      
       RewriteRule ^([a-z]+)/+([a-z0-9]+)/?$ /$1_$2.php [L,QSA]
      
       RewriteRule ^([a-z]+)/+([a-z0-9]+)/+([a-z]+)/?$ /$1_$2_$3.php [L,QSA]


Problem pojawia się przy powrocie z zabezpieczonych stron do stron niezabezpieczonych :

Kod
       RewriteCond %{HTTPS} !^on$
       RewriteCond %{REQUEST_URI} ^/(form|kontakt|rejestruj|haslo|admin) [NC]
       RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
      
       RewriteCond %{HTTPS} ^on$
       RewriteCond %{REQUEST_URI} !^/(form|kontakt|rejestruj|haslo|admin) [NC]
       RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
       RewriteRule ^([a-z]+)/?$ /$1.php [L,QSA]
      
   RewriteRule ^([a-z]+)/?$ /$1.php [L,QSA]
  
       RewriteRule ^([a-z]+)/+([a-z0-9]+)/?$ /$1_$2.php [L,QSA]
      
       RewriteRule ^([a-z]+)/+([a-z0-9]+)/+([a-z]+)/?$ /$1_$2_$3.php [L,QSA]


Przejście to wykonuje się poprawnie, ale z kolei występuje błąd weryfikacji certyfikatu.
I tak np. Firefox, dla zabezpieczonych stron robi przekierowanie na https, ale nie weryfikuje tego poprawnie, pokazując bląd:
Ta witryna nie dostarcza informacji na temat swej tożsamości

a IE z kolei nie wyświetla żadnego błędu a tym bardziej kłódki.

I co z tym zrobić (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.08.2025 - 01:55